package crontask

import (
	"Hypnos-Soundcore/components/config"
	"Hypnos-Soundcore/components/crontab"
	"Hypnos-Soundcore/components/helper"
	"Hypnos-Soundcore/constants"
	"Hypnos-Soundcore/controllers/common"
	"fmt"
	"github.com/gin-gonic/gin"
)

// LocalController init controller
// @Name crontask
// @Description 定时任务
type LocalController struct {
	common.BaseController
}

// InitEngineV1 init router
func (local *LocalController) InitEngineV1(e *gin.Engine) {

	//1、定时查询DID剩余用量和订单生成,每天执行一次
	if param := config.GetXConfig().GetCronInfo(constants.CronDidAmountCheck); param != nil {
		fmt.Println("定时查询DID剩余量&预订单生成")
		if len(param.Spec) > 0 {
			if err := crontab.GetCrontab().AddFunc(param.Spec, func() {
				local.doDidAmountCheck(param)
			}); err != nil {
				helper.ErrorPrintln(local.Tag, err)
			}
		} else {
			helper.WarningPrintln(local.Tag, constants.ErrInvalidCrontab)
		}
	}
	//2、定时生成订单&DID信息写入，每天执行一次
	if param := config.GetXConfig().GetCronInfo(constants.CronDidInfoWrite); param != nil {
		fmt.Println("定时生成订单&DID信息写入")
		if len(param.Spec) > 0 {
			if err := crontab.GetCrontab().AddFunc(param.Spec, func() {
				local.doWriteOriginalDid(param)
			}); err != nil {
				helper.ErrorPrintln(local.Tag, err)
			}
		} else {
			helper.WarningPrintln(local.Tag, constants.ErrInvalidCrontab)
		}
	}
	//3、定时安全验证&DID信息导入，每天执行一次
	if param := config.GetXConfig().GetCronInfo(constants.CronDidOrderImport); param != nil {
		fmt.Println("定时安全验证&DID信息导入")
		if len(param.Spec) > 0 {
			if err := crontab.GetCrontab().AddFunc(param.Spec, func() {
				local.doImportDidOrder(param)
			}); err != nil {
				helper.ErrorPrintln(local.Tag, err)
			}
		} else {
			helper.WarningPrintln(local.Tag, constants.ErrInvalidCrontab)
		}
	}

}

// InitRouterGroupV1 init router
func (local *LocalController) InitRouterGroupV1(g *gin.RouterGroup) {
}

func init() {
	common.RegisterController(&LocalController{
		BaseController: common.BaseController{Tag: constants.TagCronTask},
	})
	fmt.Println("crontask Controller.........s")
}
